package cn.wowjoy.pda.android_pharmacy.common.utils;

import java.util.Comparator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import cn.wowjoy.pda.android_pharmacy.model.xmlEntity.doorPatientInfo.DoorPatientInfoBeen;
import cn.wowjoy.pda.android_pharmacy.model.xmlEntity.inHospitalPatientInfo.InHospitalPatientBeen;
import cn.wowjoy.pda.android_pharmacy.model.xmlEntity.putInfo.PutSingleBeen;

/**
 * Created by Administrator on 2017/8/31.
 */

public class MyCompareCheck<T> implements Comparator<T> {
    /**
     * 利用正则表达式判断字符串是否是数字
     *
     * @param str
     * @return dongxin@0902
     */
    public boolean isNumeric(String str) {
        Pattern pattern = Pattern.compile("[0-9]*");
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches()) {
            return false;
        }
        return true;
    }

    @Override
    public int compare(T t1, T t2) {
        if (t1 instanceof DoorPatientInfoBeen) {
            DoorPatientInfoBeen p1 = (DoorPatientInfoBeen) t1;
            DoorPatientInfoBeen p2 = (DoorPatientInfoBeen) t2;
            return -(p1.getKFWZMC().compareTo(p2.getKFWZMC()));
//            if( null != p1.getKFWZMC() && p1.getKFWZMC().length()>3 && null!= p2.getKFWZMC() && p2.getKFWZMC().length()>3){
//                if(isNumeric(p1.getKFWZMC().substring(1,3)) && isNumeric(p2.getKFWZMC().substring(1,3))){
//                    //两个第二位都是数字 P01  Z02
//                    if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) > Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                        return 1;
//                    } else if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) < Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                        return -1;
//                    } else {
//                        return p1.getKFWZMC().compareTo(p2.getKFWZMC());
//                    }
//                }else if(!isNumeric(p1.getKFWZMC().substring(1,2)) && isNumeric(p2.getKFWZMC().substring(1,2))){
//                    // 第二位不是数字
//                    if(isNumeric(p1.getKFWZMC().substring(2,4)) && isNumeric(p2.getKFWZMC().substring(1,3))){
//                        if (Integer.parseInt(p1.getKFWZMC().substring(2, 4)) > Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                            return 1;
//                        } else if (Integer.parseInt(p1.getKFWZMC().substring(2, 4)) < Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                            return -1;
//                        } else {
//                            return p1.getKFWZMC().compareTo(p2.getKFWZMC());
//                        }
//                    }
//                }else if(!isNumeric(p2.getKFWZMC().substring(1,2)) && isNumeric(p1.getKFWZMC().substring(1,2))) {
//                    if (isNumeric(p2.getKFWZMC().substring(2, 4)) && isNumeric(p1.getKFWZMC().substring(1, 3))) {
//                        if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) > Integer.parseInt(p2.getKFWZMC().substring(2, 4))) {
//                            return 1;
//                        } else if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) < Integer.parseInt(p2.getKFWZMC().substring(2, 4))) {
//                            return -1;
//                        } else {
//                            return p1.getKFWZMC().compareTo(p2.getKFWZMC());
//                        }
//                    }
//                }
//            }
        }
        if (t1 instanceof InHospitalPatientBeen) {
            InHospitalPatientBeen p1 = (InHospitalPatientBeen) t1;
            InHospitalPatientBeen p2 = (InHospitalPatientBeen) t2;
            return p1.getKFWZMC().compareTo(p2.getKFWZMC());
//            if( null != p1.getKFWZMC() && p1.getKFWZMC().length()>3 && null!= p2.getKFWZMC() && p2.getKFWZMC().length()>3){
//                if(isNumeric(p1.getKFWZMC().substring(1,3)) && isNumeric(p2.getKFWZMC().substring(1,3))){
//                    //两个第二位都是数字 P01  Z02
//                    if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) > Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                        return 1;
//                    } else if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) < Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                        return -1;
//                    } else {
//                        return p1.getKFWZMC().compareTo(p2.getKFWZMC());
//                    }
//                }else if(!isNumeric(p1.getKFWZMC().substring(1,2)) && isNumeric(p2.getKFWZMC().substring(1,2))){
//                    // 第二位不是数字
//                    if(isNumeric(p1.getKFWZMC().substring(2,4)) && isNumeric(p2.getKFWZMC().substring(1,3))){
//                        if (Integer.parseInt(p1.getKFWZMC().substring(2, 4)) > Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                            return 1;
//                        } else if (Integer.parseInt(p1.getKFWZMC().substring(2, 4)) < Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                            return -1;
//                        } else {
//                            return p1.getKFWZMC().compareTo(p2.getKFWZMC());
//                        }
//                    }
//                }else if(!isNumeric(p2.getKFWZMC().substring(1,2)) && isNumeric(p1.getKFWZMC().substring(1,2))) {
//                    if (isNumeric(p2.getKFWZMC().substring(2, 4)) && isNumeric(p1.getKFWZMC().substring(1, 3))) {
//                        if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) > Integer.parseInt(p2.getKFWZMC().substring(2, 4))) {
//                            return 1;
//                        } else if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) < Integer.parseInt(p2.getKFWZMC().substring(2, 4))) {
//                            return -1;
//                        } else {
//                            return p1.getKFWZMC().compareTo(p2.getKFWZMC());
//                        }
//                    }
//                }
//            }
        }
        if (t1 instanceof PutSingleBeen) {
            PutSingleBeen p1 = (PutSingleBeen) t1;
            PutSingleBeen p2 = (PutSingleBeen) t2;
            return p1.getKFWZMC().compareTo(p2.getKFWZMC());
//            if( null != p1.getKFWZMC() && p1.getKFWZMC().length()>3 && null!= p2.getKFWZMC() && p2.getKFWZMC().length()>3){
//                if(isNumeric(p1.getKFWZMC().substring(1,3)) && isNumeric(p2.getKFWZMC().substring(1,3))){
//                    //两个第二位都是数字 P01  Z02
//                    if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) > Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                        return 1;
//                    } else if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) < Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                        return -1;
//                    } else {
//                        return p1.getKFWZMC().compareTo(p2.getKFWZMC());
//                    }
//                }else if(!isNumeric(p1.getKFWZMC().substring(1,2)) && isNumeric(p2.getKFWZMC().substring(1,2))){
//                    // 第二位不是数字
//                    if(isNumeric(p1.getKFWZMC().substring(2,4)) && isNumeric(p2.getKFWZMC().substring(1,3))){
//                        if (Integer.parseInt(p1.getKFWZMC().substring(2, 4)) > Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                            return 1;
//                        } else if (Integer.parseInt(p1.getKFWZMC().substring(2, 4)) < Integer.parseInt(p2.getKFWZMC().substring(1, 3))) {
//                            return -1;
//                        } else {
//                            return p1.getKFWZMC().compareTo(p2.getKFWZMC());
//                        }
//                    }
//                }else if(!isNumeric(p2.getKFWZMC().substring(1,2)) && isNumeric(p1.getKFWZMC().substring(1,2))) {
//                    if (isNumeric(p2.getKFWZMC().substring(2, 4)) && isNumeric(p1.getKFWZMC().substring(1, 3))) {
//                        if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) > Integer.parseInt(p2.getKFWZMC().substring(2, 4))) {
//                            return 1;
//                        } else if (Integer.parseInt(p1.getKFWZMC().substring(1, 3)) < Integer.parseInt(p2.getKFWZMC().substring(2, 4))) {
//                            return -1;
//                        } else {
//                            return p1.getKFWZMC().compareTo(p2.getKFWZMC());
//                        }
//                    }
//                }
//            }
//        }
//        return 0;
        }
        return 0;
    }
}